home *** CD-ROM | disk | FTP | other *** search
Wrap
' ***************************************************************************** ' * * ' * Das ultimative Würfel-Programm von Wolfgang Schneider * ' * * ' ***************************************************************************** $m10000 $s&,s> IF XBIOS(4)=2 MOUSE mausx&,mausy&,k# HIDEM version$="Version 1.0, 27.06.1992" init main SETMOUSE mausx&,mausy& SHOWM ELSE pling ALERT 3,"|Sorry, WÜRFELN nur im|640*400 Punkte Modus!",1,"Schade!",k# ENDIF EDIT ' > PROCEDURE init OPTION BASE 1 anz|=1 anzahl%=0 RANDOMIZE DIM statistik%(6),x&(5),pasch|(6),y&(3,6),xxx&(3,3),yyy&(3,3),gr|(3) gr|(1)=15 gr|(2)=12 gr|(3)=10 y&(1,1)=160 y&(1,2)=400 y&(1,3)=245 y&(1,4)=125 y&(1,5)=395 y&(1,6)=275 y&(2,1)=128 y&(2,2)=384 y&(2,3)=260 y&(2,4)=140 y&(2,5)=380 y&(2,6)=260 y&(3,1)=106 y&(3,2)=371 y&(3,3)=270 y&(3,4)=150 y&(3,5)=370 y&(3,6)=250 x&(1)=-210 x&(2)=0 x&(3)=210 x&(4)=-120 x&(5)=120 xxx&(1,1)=271 xxx&(1,2)=320 xxx&(1,3)=369 yyy&(1,1)=151 yyy&(1,2)=200 yyy&(1,3)=249 xxx&(2,1)=281 xxx&(2,2)=320 xxx&(2,3)=359 yyy&(2,1)=161 yyy&(2,2)=200 yyy&(2,3)=239 xxx&(3,1)=288 xxx&(3,2)=320 xxx&(3,3)=352 yyy&(3,1)=168 yyy&(3,2)=200 yyy&(3,3)=232 first!=TRUE raus!=FALSE zehn|=10 zwanzig|=20 oben$=CHR$(0)+CHR$(72) unten$=CHR$(0)+CHR$(80) links$=CHR$(0)+CHR$(75) rechts$=CHR$(0)+CHR$(77) programm!=FALSE preret$="Press RETURN" ~GRAF_GROWBOX(320,240,0,0,0,0,640,400) RETURN > PROCEDURE pling SOUND 1,15,10,6 WAVE 1,1,9,12085 RETURN > PROCEDURE beep SOUND 1,6,1,6,3 SOUND 1,0,1,5,0 RETURN > PROCEDURE bild GRAPHMODE 1 RANDOMIZE DEFTEXT 1,0,0,6 DEFFILL 1,2,4 PBOX 0,0,640,400 DEFFILL 0,2,8 DEFTEXT 1,0,0,32 GRAPHMODE 2 PRBOX 8,312,62,366 RBOX 7,311,63,367 RBOX 8,312,62,366 RBOX 10,314,60,364 TEXT 70,352,"<< 10er" PRBOX 578,312,632,366 RBOX 577,311,633,367 RBOX 578,312,632,366 RBOX 580,314,630,364 TEXT 460,352,"20er >>" PBOX 10,10,630,91 BOX 10,10,630,91 BOX 11,11,629,90 TEXT 30,40,"Statistiks:" DEFTEXT 1,0,0,6 TEXT 46,50,"(für 6er Würfel)" DEFTEXT 1,0,0,13 TEXT 30,70,"Absolute Anzahl:" TEXT 30,86,"Aktuelle Summe :" DEFTEXT 1,0,0,6 FOR i|=1 TO 6 TEXT 230,ADD(MUL(i|,12),13),STR$(i|)+":" TEXT 260,ADD(MUL(i|,12),13)," 0%" NEXT i| GRAPHMODE 1 PBOX 200,309,440,370 BOX 200,309,440,370 BOX 202,311,438,368 BOX 203,312,437,367 tastatur DEFTEXT 1,0,0,6 PBOX 10,375,630,395 BOX 10,375,630,395 BOX 11,376,629,394 TEXT 20,388,600,"Wolfgang Schneider * Von-Ketteler-Str.26 * 5000 Köln 80 * Tel.: 0221/6404043" IF first! pling ~FORM_ALERT(1,"[0]"+"[ Alea iacta est!|~~~~~~~~~~~~~~~~~~~~~~~~~~~~| W Ü R F E L ist FREEWARE! |~~~~~~~~~~~~~~~~~~~~~~~~~~~~|Programmiert von W.Schneider ]"+"[ "+version$+" ]") first!=FALSE ENDIF DEFLINE 1,0,0,0 LINE 20,359,50,359 RETURN > PROCEDURE tastatur DEFTEXT 1,4,0,6 TEXT 252,322,"ESC = Programmende" TEXT 242,332,"RETURN = Neu würfeln" TEXT 213,342,"1 bis 6 = Anzahl 6er Würfel" TEXT 220,352,"L = 6er Statistik löschen" TEXT 207,362,230,"Cursortasten = ""Programmieren""" RETURN > PROCEDURE kreis_start DEFFILL 1,2,4 GRAPHMODE 4 PRBOX 2,96,638,304 GRAPHMODE 1 DEFFILL 0,2,8 FOR j|=1 TO anz| IF anz|<4 SELECT anz| CASE 3 x&=x&(j|) CASE 2 x&=x&(ADD(3,j|)) CASE 1 x&=x&(2) ENDSELECT PRBOX ADD(x&,218),100,ADD(x&,422),300 RBOX ADD(x&,218),98,ADD(x&,422),302 FOR i|=1 TO 3 RBOX ADD(x&,ADD(220,i|)),ADD(100,i|),ADD(x&,SUB(420,i|)),SUB(300,i|) NEXT i| DEFTEXT 1,2,0,32 TEXT ADD(x&,225),211,-191,preret$ ELSE k|=SUB(anz|,3) x&=SUB(MUL(j|,y&(k|,1)),y&(k|,2)) PRBOX ADD(x&,SUB(y&(k|,3),2)),y&(k|,4),ADD(x&,ADD(y&(k|,5),2)),y&(k|,6) RBOX ADD(x&,SUB(y&(k|,3),2)),SUB(y&(k|,4),2),ADD(x&,ADD(y&(k|,5),2)),ADD(y&(k|,6),2) FOR i|=1 TO 3 RBOX ADD(x&,ADD(y&(k|,3),i|)),ADD(y&(k|,4),i|),ADD(x&,SUB(y&(k|,5),i|)),SUB(y&(k|,6),i|) NEXT i| SELECT anz| CASE 4 DEFTEXT 1,2,0,20 TEXT ADD(x&,252),209,-137,preret$ CASE 5 DEFTEXT 1,2,0,13 TEXT ADD(x&,272),207,preret$ CASE 6 DEFTEXT 1,2,0,6 TEXT ADD(x&,276),204,-89,preret$ ENDSELECT ENDIF NEXT j| RETURN > PROCEDURE main LOCAL new|,i|,k$,tricky|,x_pos& bild kreis_start GOTO label REPEAT aktuell|=0 FOR i|=1 TO anz| t|=SUCC(RAND(6)) pasch|(i|)=t| aktuell|=ADD(aktuell|,t|) SELECT anz| CASE 1 x&=2 CASE 2 x&=ADD(i|,3) CASE 3,4,5,6 x&=i| ENDSELECT kreis(x&,t|,anz|) NEXT i| statistik DEFTEXT 1,0,0,32 x_er(11,zehn|) x_er(581,zwanzig|) pasch!=TRUE FOR i|=2 TO anz| pasch!=AND(pasch!,(pasch|(i|)=pasch|(1))) EXIT IF NOT pasch! NEXT i| IF AND(pasch!,NOT (anz|=1)) DEFTEXT 1,0,0,32 DEFFILL 0,2,8 PBOX 204,313,436,366 GRAPHMODE 3 i|=1 REPEAT INC i| TEXT 277,351,"PASCH!" UNTIL i|>20 GRAPHMODE 1 PBOX 204,313,436,366 tastatur ENDIF beep label: REPEAT k$=UPPER$(INKEY$) UNTIL OR(OR(OR(OR(OR(OR(OR(OR(AND(k$>"0",k$<"7"),k$=CHR$(13)),k$=CHR$(27)),k$="L"),k$="*"),k$=oben$),k$=unten$),k$=links$),k$=rechts$) REPEAT UNTIL INKEY$="" IF AND(k$>"0",k$<"7") k|=VAL(k$) IF k|<>anz| anz|=k| IF anz|>3 k|=SUB(anz|,3) xxx1&=xxx&(k|,1) xxx2&=xxx&(k|,2) xxx3&=xxx&(k|,3) yyy1&=yyy&(k|,1) yyy2&=yyy&(k|,2) yyy3&=yyy&(k|,3) ENDIF kreis_start GOTO label ELSE GOTO label ENDIF ELSE IF k$="L" ARRAYFILL statistik%(),0 anzahl%=-anz| DEFTEXT 1,0,0,13 TEXT 168,70," " statistik GOTO label ELSE IF k$=oben$ IF programm! ABSOLUTE tricky|,V:zwanzig| x_pos&=460 ELSE ABSOLUTE tricky|,V:zehn| x_pos&=118 ENDIF new|=MIN(99,SUCC(tricky|)) GRAPHMODE 2 DEFTEXT 0,2,0,32 VSYNC TEXT x_pos&,352,RIGHT$(" "+STR$(tricky|),2) GRAPHMODE 2 DEFTEXT 1,0,0,32 tricky|=new| VSYNC TEXT x_pos&,352,RIGHT$(" "+STR$(tricky|),2) GRAPHMODE 1 GOTO label ELSE IF k$=unten$ IF programm! ABSOLUTE tricky|,V:zwanzig| x_pos&=460 ELSE ABSOLUTE tricky|,V:zehn| x_pos&=118 ENDIF new|=MAX(2,PRED(tricky|)) GRAPHMODE 2 DEFTEXT 0,2,0,32 VSYNC TEXT x_pos&,352,RIGHT$(" "+STR$(tricky|),2) GRAPHMODE 2 DEFTEXT 1,0,0,32 tricky|=new| VSYNC TEXT x_pos&,352,RIGHT$(" "+STR$(tricky|),2) GRAPHMODE 1 GOTO label ELSE IF k$=links$ IF programm! programm!=FALSE GRAPHMODE 3 LINE 590,359,620,359 GRAPHMODE 1 LINE 20,359,50,359 ENDIF GOTO label ELSE IF k$=rechts$ IF NOT programm! programm!=TRUE GRAPHMODE 3 LINE 20,359,50,359 GRAPHMODE 1 LINE 590,359,620,359 ENDIF GOTO label ENDIF IF OR(k$=CHR$(27),k$="*") raus!=@bye IF NOT raus! GOTO label ENDIF ENDIF UNTIL raus! ~GRAF_SHRINKBOX(320,240,0,0,0,0,640,400) RETURN > PROCEDURE x_er(x_pos&,max|) LOCAL x& x&=SUCC(RAND(max|)) IF x&<10 TEXT x_pos&,351," "+STR$(x&)+" " ELSE TEXT ADD(x_pos&,8),351,STR$(x&) ENDIF RETURN > PROCEDURE kreis(pos|,wert|,anz|) LOCAL x&,i|,k|,gr| INC statistik%(wert|) DEFFILL 0,2,8 IF anz|<4 gr|=22 x&=x&(pos|) PBOX ADD(x&,227),107,ADD(x&,413),293 DEFFILL 1,2,8 SELECT wert| VSYNC CASE 1 PCIRCLE ADD(x&,320),200,gr| CASE 2 PCIRCLE ADD(x&,255),135,gr| PCIRCLE ADD(x&,385),265,gr| CASE 3 PCIRCLE ADD(x&,255),135,gr| PCIRCLE ADD(x&,320),200,gr| PCIRCLE ADD(x&,385),265,gr| CASE 4 PCIRCLE ADD(x&,255),135,gr| PCIRCLE ADD(x&,385),135,gr| PCIRCLE ADD(x&,255),265,gr| PCIRCLE ADD(x&,385),265,gr| CASE 5 PCIRCLE ADD(x&,255),135,gr| PCIRCLE ADD(x&,385),135,gr| PCIRCLE ADD(x&,320),200,gr| PCIRCLE ADD(x&,255),265,gr| PCIRCLE ADD(x&,385),265,gr| CASE 6 PCIRCLE ADD(x&,255),135,gr| PCIRCLE ADD(x&,385),135,gr| PCIRCLE ADD(x&,255),200,gr| PCIRCLE ADD(x&,385),200,gr| PCIRCLE ADD(x&,255),265,gr| PCIRCLE ADD(x&,385),265,gr| ENDSELECT ELSE k|=SUB(anz|,3) gr|=gr|(k|) x&=SUB(MUL(pos|,y&(k|,1)),y&(k|,2)) SELECT anz| CASE 4 PBOX ADD(x&,253),132,ADD(x&,387),268 CASE 5 PBOX ADD(x&,267),146,ADD(x&,373),254 CASE 6 PBOX ADD(x&,277),156,ADD(x&,363),244 ENDSELECT DEFFILL 1,2,8 SELECT wert| VSYNC CASE 1 PCIRCLE ADD(x&,xxx2&),yyy2&,gr| CASE 2 PCIRCLE ADD(x&,xxx1&),yyy1&,gr| PCIRCLE ADD(x&,xxx3&),yyy3&,gr| CASE 3 PCIRCLE ADD(x&,xxx1&),yyy1&,gr| PCIRCLE ADD(x&,xxx2&),yyy2&,gr| PCIRCLE ADD(x&,xxx3&),yyy3&,gr| CASE 4 PCIRCLE ADD(x&,xxx1&),yyy1&,gr| PCIRCLE ADD(x&,xxx3&),yyy1&,gr| PCIRCLE ADD(x&,xxx1&),yyy3&,gr| PCIRCLE ADD(x&,xxx3&),yyy3&,gr| CASE 5 PCIRCLE ADD(x&,xxx1&),yyy1&,gr| PCIRCLE ADD(x&,xxx3&),yyy1&,gr| PCIRCLE ADD(x&,xxx2&),yyy2&,gr| PCIRCLE ADD(x&,xxx1&),yyy3&,gr| PCIRCLE ADD(x&,xxx3&),yyy3&,gr| CASE 6 PCIRCLE ADD(x&,xxx1&),yyy1&,gr| PCIRCLE ADD(x&,xxx3&),yyy1&,gr| PCIRCLE ADD(x&,xxx1&),yyy2&,gr| PCIRCLE ADD(x&,xxx3&),yyy2&,gr| PCIRCLE ADD(x&,xxx1&),yyy3&,gr| PCIRCLE ADD(x&,xxx3&),yyy3&,gr| ENDSELECT ENDIF RETURN > FUNCTION bye REPEAT UNTIL MOUSEK=0 pling IF FORM_ALERT(2,"[0][ Programm beenden ?][Wirklich|Unwirklich]")=1 raus!=TRUE ELSE raus!=FALSE ENDIF HIDEM RETURN raus! ENDFUNC > PROCEDURE statistik LOCAL max%,summe%,i|,dummy|,dummy& summe%=0 max%=0 DEFTEXT 1,0,0,6 FOR i|=1 TO 6 max%=MAX(max%,statistik%(i|)) summe%=ADD(summe%,statistik%(i|)) NEXT i| dummy|=LEN(STR$(max%)) IF MUL(max%,summe%)=0 max%=1000 summe%=1000 ENDIF FOR i|=1 TO 6 TEXT 260,ADD(MUL(i|,12),13),RIGHT$(" "+STR$(ROUND(MUL(100,statistik%(i|))/summe%)),3) DEFFILL 0,2,8 PBOX 300,ADD(MUL(i|,12),5),620,ADD(MUL(i|,12),14) DEFFILL 1,2,SUCC(i|) dummy&=MUL(dummy|,8) PBOX 300,ADD(MUL(i|,12),5),ADD(300,MUL(ROUND(SUB(316,dummy&)),(statistik%(i|)))/max%),ADD(MUL(i|,12),14) TEXT SUB(622,dummy&),ADD(MUL(i|,12),13),RIGHT$(SPACE$(dummy|)+STR$(statistik%(i|)),dummy|) NEXT i| anzahl%=ADD(anzahl%,anz|) DEFTEXT 1,0,0,13 TEXT 168,70,anzahl% TEXT 168,86,STR$(aktuell|)+" " RETURN